1. Field of the Invention
The present invention relates to an improved data processing system and, in particular, to a method and apparatus for information processing. Still more particularly, the present invention relates generally to recording and analyzing information about the performance of database transactions in a data processing system.
2. Description of Related Art
Many enterprises rely heavily upon their information technology infrastructures to accomplish critical business tasks. However, it is not sufficient to simply complete certain computational tasks. Many data processing systems incorporate software that allows system administrators to more fully understand the manner in which a data processing system is performing its computational tasks. In order to do so, a typical data processing system contains software that allows transactions to be tracked in some manner as transactions are processed within the data processing system. The generated transactional information can be analyzed to understand various characteristics of the performance of the data processing system. For example, a system administrator may desire to spot potential processing bottlenecks or other problems. In other cases, it may be necessary for a system administrator to understand the execution path that was employed via many server applications to complete a given transaction.
A typical transaction, though, can be complex. Many applications may perform operations throughout a data processing system such that each operation only completes a portion of the transaction. In order to monitor a given transaction as various operations are performed throughout a data processing system, operations that are performed with respect to the given transaction need to be identified in some manner. Hence, a transaction identifier of some type is assigned to a given transaction. As each operation is performed with respect to a given transaction, the module or unit that performs each operation receives the transaction identifier of the given transaction. When the module or unit records or logs transactional information as it initiates, performs, or completes an operation, the module or unit also records or logs the received transaction identifier. The transactional information can be subsequently analyzed for a given transaction by correlating records that contain the transaction identifier that was associated or assigned to the given transaction.
Similarly, in order to monitor transactions from a given user or a given client application, operations that are performed with respect to the given user or the given application need to be identified in some manner, e.g., by associating a user identifier or an application identifier with those operations. As each operation is performed with respect to transactions from a given user or a given application, the module or unit that performs each operation receives the identifier that is associated with the transactions. When the module or unit records or logs transactional information as it initiates, performs, or completes an operation, the module or unit also records or logs the associated identifier. The transactional information can be subsequently analyzed by correlating records that contain the identifier that is associated or assigned to the given user or the given application.
In this manner, transactional fingerprinting may be accomplished, i.e. transactions can be fingerprinted, thereby allowing identification of information related to one or more operations that have been performed for a transaction. Identifiers are associated with transactional operations, and these identifiers are recorded within the transaction log data or transaction trace data as the operations are initiated, performed, or completed. The identifiers may serve multiple identification purposes, e.g., as described above, a user identifier, an application identifier, or a specific transaction identifier. However, in general, the data value that allows the transactional information to be correlated is called a correlating token or a correlator.
Many enterprises desire to modify application code to add instrumentation code that supports transaction analysis as an enterprise management function, particularly in accordance with the Application Response Measurement (ARM) standard. The ARM standard has been promulgated by The Open Group to assist in the development of enterprise management tools; The Open Group is a vendor-neutral and technology-neutral consortium of corporations and institutions. According to The Open Group, the ARM standard describes a common method for integrating enterprise applications as manageable entities. The ARM standard allows users to extend their enterprise management tools directly to applications creating a comprehensive end-to-end management capability that includes measuring application availability, application performance, application usage, and end-to-end transaction response time. Although the ARM standard may be used as a guiding method by enterprises for instrumenting applications to accomplish transactional fingerprinting, it may not be possible or feasible in some cases for an enterprise to do so because an enterprise may not have access or permission to modify the source code of an application to add instrumentation, e.g., ARM-compliant function calls.
With the knowledge that many enterprises desire transaction analysis as an enterprise management function, many vendors have modified their applications to provide support for transactional-fingerprinting. In particular, many commercially available database engines have an ability to produce some type of status information for each SQL (Structured Query Language) call that is processed, yet the logged transactional information is often not useful. More specifically, the granularity at which a database engine's transactional information can be analyzed is only as fine as the granularity of the correlators that are provided to the database engine. In some data processing systems, the correlators that are provided to a database engine are repetitious or non-unique because of the manner in which the infrastructure of a data processing system is configured. However, it is often not possible, feasible, or permissible to instrument a database engine to perform transactional fingerprinting as desired, and it is often not possible or feasible to restructure a data processing system merely to install transactional fingerprinting with respect to database transactions as desired.
Therefore, it would be advantageous to have a method and a system that supports transactional fingerprinting with respect to database operations. Moreover, it would be advantageous to support transactional fingerprinting with respect to database operations without requiring modifications to the database engine.